XeF2 resonance scans & wavefunction plotting: Cooper min region (80 - 100eV)

28/04/21 PH

Looking at high-res scans over resonance regions, with wavefunctions.

For

Setup

In [1]:
!hostname
Stimpy
In [2]:
!conda env list
# conda environments:
#
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\dataVis3D
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\dataVis3D-yt
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\ePSdev
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\ePSpkgTest2
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\fibre-sim
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\ipykernel_py2
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\pkgTest
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\pypi-test
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\seabreeze-bk
                         C:\Program Files (x86)\Microsoft Visual Studio\Shared\Anaconda3_64\envs\test
base                     C:\ProgramData\Anaconda3
ePSdev                   C:\Users\femtolab\.conda\envs\ePSdev
epsInstallTest           C:\Users\femtolab\.conda\envs\epsInstallTest
epsdev                *  C:\Users\femtolab\.conda\envs\epsdev
epsman                   C:\Users\femtolab\.conda\envs\epsman
seabreeze                C:\Users\femtolab\AppData\Local\conda\conda\envs\seabreeze
tensorflow               C:\Users\femtolab\AppData\Local\conda\conda\envs\tensorflow

In [3]:
import sys
import os
from pathlib import Path
import numpy as np
# import epsproc as ep
import xarray as xr

import matplotlib.pyplot as plt

from datetime import datetime as dt
timeString = dt.now()
In [4]:
# For module testing, include path to module here, otherwise use global installation
if sys.platform == "win32":
    modPath = r'D:\code\github\ePSproc'  # Win test machine
    winFlag = True
else:
    modPath = r'/home/femtolab/github/ePSproc/'  # Linux test machine
    winFlag = False
    
sys.path.append(modPath)
import epsproc as ep

# Plotters
from epsproc.plot import hvPlotters

# Multijob class dev code
from epsproc.classes.multiJob import ePSmultiJob
In [5]:
hvPlotters.setPlotters(width = 1000, snsStyle="whitegrid")
# import bokeh
# import holoviews as hv
# hv.extension('bokeh')


# For class, above settings don't take, not sure why, something to do with namespaces/calling sequence?
# Overriding snsStyle does work however... although NOT CONSISTENTLY????
# AH, looks like ordering matters - set_style LAST (.set seems to override)
import seaborn as sns

sns.set(rc={'figure.figsize':(10,6)})  # Set figure size in inches
sns.set_context("paper")
sns.set_style("whitegrid")  # Set plot style
sns.set_palette("Paired")   # Set colour mapping

# sns.set_theme(context='paper', style='whitegrid')  # Not valid for v0.9.0
In [6]:
# Try direct fig type setting for PDF output figs
from IPython.display import set_matplotlib_formats
# set_matplotlib_formats('png', 'pdf')
set_matplotlib_formats('svg', 'pdf')

Load data

In [7]:
# # Scan for subdirs, based on existing routine in getFiles()

# fileBase = r'D:\projects\ePolyScat\xef2\XeF2_highRes_wf'  # Data dir on Stimpy
# fileBase = r'D:\VMs\Share\ePSshare\xe\Xe_wf'  # Data dir on Stimpy
# jobDirs = [r'D:\VMs\Share\ePSshare\xe\Xe_wf\orb19_4d']  # Check OK for single dir specified method

# Set explicit list of dirs
# jobDirs = [r'D:\VMs\Share\ePSshare\xe\Xe_wf\orb19_4d', r'D:\projects\ePolyScat\xef2\XeF2_highRes_wf\orb21_A1G',
#           r'D:\projects\ePolyScat\xef2\XeF2_highRes_wf\orb22_E1G', r'D:\projects\ePolyScat\xef2\XeF2_highRes_wf\orb24_E2G']

# For single bond-length, res scan, on Stimpy
jobDirs = [r'D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900']
In [8]:
data = ePSmultiJob(jobDirs = jobDirs, verbose = 0)
In [9]:
# keys = [4,5,6]  # Set for 4d data only
# data.scanFiles(keys = keys)

data.scanFiles()  # All files
data.jobsSummary()
Found 1 directories, with 12 files.

*** Job orb22_E1G-1.900 details
Key: orb22_E1G-1.900
Dir D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900, 12 file(s).
{   'batch': 'ePS xef2, batch XeF2_resscan, orbital orb22_E1G-1.900',
    'event': 'orb 22/23 ionization (Xe 4d, E1G/PG), bond = 1.900 A.',
    'orbE': -76.12929466815399,
    'orbLabel': 'Xe 4d, E1G/PG'}

Cooper minimum region

High res scan at 0.25eV step-size, over 1st resonance feature and Cooper minimum region.

XS & $\beta$

In [10]:
# Comparative plot over datasets (all symmetries only)
Etype = 'Eke'  # Set for Eke or Ehv energy scale
Erange=[0, 100]  # Plot range (full range if not passed to function below)
data.plotGetCroComp(pType='SIGMA', Etype = Etype, Erange = Erange)
# data.plotGetCroComp(pType='SIGMA', Etype = Etype)
2021-04-29T11:16:01.086636 image/svg+xml Matplotlib v3.3.1, https://matplotlib.org/
In [11]:
# Comparative plot over datasets (all symmetries only)
# Etype = 'Ehv'  # Set for Eke or Ehv energy scale
# Erange=[50, 300]  # Plot range (full range if not passed to function below)
data.plotGetCroComp(pType='BETA', Etype = Etype, Erange = Erange)
# data.plotGetCroComp(pType='SIGMA', Etype = Etype)
2021-04-29T11:16:01.642995 image/svg+xml Matplotlib v3.3.1, https://matplotlib.org/

Matrix elements

High-res over resonance regions. For overview & more discussion, see notes at https://phockett.github.io/ePSdata/XeF2-preliminary/xe-xef2_plots-notes_220421.html#Matrix-elements.

In [12]:
# Set options - should be in structure!
thres = 0.01
logFlag = True
selDims = {'Type':'L', 'it':1}
figSize = (15,8)
cmap = "vlag"

data.lmPlot(dataType = 'matE', Erange = Erange, Etype = Etype, thres = thres, logFlag = logFlag, selDims = selDims, fillna = True, cmap = cmap, figsize = figSize)   

# cmap = "cubehelix" )  # Quite good for showing resonance features.
Plotting data XeF2_resscan.orb22_E1G-1.900_E82.0_1.25_99.5eV.inp.out, pType=a, thres=0.01, with Seaborn
2021-04-29T11:16:02.683637 image/svg+xml Matplotlib v3.3.1, https://matplotlib.org/
In [13]:
data.lmPlot(dataType = 'matE', pType = "phase", Erange = Erange, Etype = Etype, thres = thres, logFlag = False, selDims = selDims, fillna = True, cmap = cmap, figsize = figSize) 

# cmap = "cubehelix" )  # Quite good for showing resonance features.
Plotting data XeF2_resscan.orb22_E1G-1.900_E82.0_1.25_99.5eV.inp.out, pType=phase, thres=0.01, with Seaborn
2021-04-29T11:16:04.395552 image/svg+xml Matplotlib v3.3.1, https://matplotlib.org/

Wavefunctions

Animations

In [19]:
# Load class and data
from epsproc.vol.wfPlot import wfPlotter

# Load data from modPath\data
dataPath = os.path.join(jobDirs[0], 'waveFn')

tempdir = Path(r'D:\temp\xef2_wavefn_280421')
wfClass = wfPlotter(fileBase = dataPath, tempdir = tempdir)
*** Scanning dir
D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn
Found 414 _Orb.dat file(s)


*** FileListSort 
  Prefix: D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn\xef2S 
  3 groups.
Found molecule: xef2
Found 3 symmetries, ['SPUCDU', 'SPUCSU', 'SSUCPU']
Found 138 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5, 235.0, 235.25, 235.5, 235.75, 236.0, 236.25, 236.5, 236.75, 237.0, 237.25, 237.5, 237.75, 238.0, 238.25, 238.5, 238.75, 239.0, 239.25, 239.5, 239.75, 240.0, 240.25, 240.5, 240.75, 241.0, 241.25, 241.5, 241.75, 242.0, 242.25, 242.5, 242.75, 243.0, 243.25, 243.5, 243.75, 244.0, 244.25, 244.5, 244.75, 245.0, 245.25, 245.5, 245.75, 246.0, 246.25, 246.5, 246.75, 247.0, 247.25, 247.5, 247.75, 248.0, 248.25, 248.5, 248.75, 249.0, 249.25, 249.5, 249.75, 250.0, 250.25, 250.5]

*** Read existing plot options from file D:\code\github\ePSproc\epsproc\vol\plotOptions.json OK.

DU continuum

In [20]:
# Run for DU case, first resonance only (ugly index selection only at the moment!)
wfClass.selectOrbFiles(EList = list(range(0,75)), SymList = 'SPUCDU')
Selected 75 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5]
Selected symmetries, ['SPUCDU']
In [21]:
# Read files...
wfClass.readOrbFiles()
Read 75 wavefunction data files OK.
*** Grids set OK
*** Data set OK
In [22]:
wfClass.tempdir = tempdir
In [23]:
# Generate animation...

# Generate animation...

# Currently need to force some options for animation case... UGLY!!!
wfClass.plotOptions['global']['subplot'] = True
wfClass.plotOptions['global']['animate'] = True
wfClass.plotOptions['global']['interactive'] = False
wfClass.plotOptions['global']['isoLevels'] = 6
wfClass.plotOptions['global']['opacity'] = 0.5
# wfClass.plotOptions['global']['isoValsPC'] = [0.25, 0.5]
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.01559873,  0.01559873]  # This is currently what is set by default, bit low in this case
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.1,  0.1]  # OK
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1,  0.1, 0.2]  # OK
wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1, -0.05, 0.05,  0.1, 0.2]  # OK

wfClass.plotWf(pType='Re')
# wfClass.plotWf(pType='Abs')
Frame images output to:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-19-24
GIF animation file:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-19-24\wfAnimation_xef2_29-04-21_11-19-24.gif
Set plotter to Plotter
Animation output complete.
Out[23]:

Molecular axis along y-axis, coords in Angs. Bond length 1.9A. Plot shows real part of the wavefunction only, as isosurfs, and a slice through the (z,y) plane.

Main features in the scattering wavefunction are at/around the cores, which define the nodes in the scattering potential. The small scattering (continuum) resonance appears mainly in the core region, in the DU case these are the visible in the intensity of the lobes just above and below the axis around z=+/-1 in the bonding region (|y|<1.9), and also just outside this region at short range (1.9 < |y| <2.5).

SU continuum

In [24]:
# Run for SU case, first resonance only (ugly index selection only at the moment!) - ALSO NEED TO RERUN file scan
wfClass = wfPlotter(fileBase = dataPath, tempdir = tempdir)
wfClass.selectOrbFiles(EList = list(range(0,75)), SymList = 'SPUCSU')
*** Scanning dir
D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn
Found 414 _Orb.dat file(s)


*** FileListSort 
  Prefix: D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn\xef2S 
  3 groups.
Found molecule: xef2
Found 3 symmetries, ['SPUCDU', 'SPUCSU', 'SSUCPU']
Found 138 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5, 235.0, 235.25, 235.5, 235.75, 236.0, 236.25, 236.5, 236.75, 237.0, 237.25, 237.5, 237.75, 238.0, 238.25, 238.5, 238.75, 239.0, 239.25, 239.5, 239.75, 240.0, 240.25, 240.5, 240.75, 241.0, 241.25, 241.5, 241.75, 242.0, 242.25, 242.5, 242.75, 243.0, 243.25, 243.5, 243.75, 244.0, 244.25, 244.5, 244.75, 245.0, 245.25, 245.5, 245.75, 246.0, 246.25, 246.5, 246.75, 247.0, 247.25, 247.5, 247.75, 248.0, 248.25, 248.5, 248.75, 249.0, 249.25, 249.5, 249.75, 250.0, 250.25, 250.5]

*** Read existing plot options from file D:\code\github\ePSproc\epsproc\vol\plotOptions.json OK.
Selected 75 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5]
Selected symmetries, ['SPUCSU']
In [25]:
# Read & animate
wfClass.readOrbFiles()

# Generate animation...

# Currently need to force some options for animation case... UGLY!!!
wfClass.plotOptions['global']['subplot'] = True
wfClass.plotOptions['global']['animate'] = True
wfClass.plotOptions['global']['interactive'] = False
wfClass.plotOptions['global']['isoLevels'] = 6
wfClass.plotOptions['global']['opacity'] = 0.5
# wfClass.plotOptions['global']['isoValsPC'] = [0.25, 0.5]
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.01559873,  0.01559873]  # This is currently what is set by default, bit low in this case
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.1,  0.1]  # OK
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1,  0.1, 0.2]  # OK
wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1, -0.05, 0.05,  0.1, 0.2]  # OK

wfClass.plotWf(pType='Re')
# wfClass.plotWf(pType='Abs')
Read 75 wavefunction data files OK.
*** Grids set OK
*** Data set OK
Frame images output to:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-20-48
GIF animation file:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-20-48\wfAnimation_xef2_29-04-21_11-20-48.gif
Set plotter to Plotter
Animation output complete.
Out[25]:

PU continuum

In [26]:
# Run for PU case, first resonance only (ugly index selection only at the moment!) - ALSO NEED TO RERUN file scan
wfClass = wfPlotter(fileBase = dataPath, tempdir = tempdir)
wfClass.selectOrbFiles(EList = list(range(0,75)), SymList = 'SSUCPU')
*** Scanning dir
D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn
Found 414 _Orb.dat file(s)


*** FileListSort 
  Prefix: D:\VMs\Share\ePSshare\xef2\XeF2_resscan\orb22_E1G-1.900\waveFn\xef2S 
  3 groups.
Found molecule: xef2
Found 3 symmetries, ['SPUCDU', 'SPUCSU', 'SSUCPU']
Found 138 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5, 235.0, 235.25, 235.5, 235.75, 236.0, 236.25, 236.5, 236.75, 237.0, 237.25, 237.5, 237.75, 238.0, 238.25, 238.5, 238.75, 239.0, 239.25, 239.5, 239.75, 240.0, 240.25, 240.5, 240.75, 241.0, 241.25, 241.5, 241.75, 242.0, 242.25, 242.5, 242.75, 243.0, 243.25, 243.5, 243.75, 244.0, 244.25, 244.5, 244.75, 245.0, 245.25, 245.5, 245.75, 246.0, 246.25, 246.5, 246.75, 247.0, 247.25, 247.5, 247.75, 248.0, 248.25, 248.5, 248.75, 249.0, 249.25, 249.5, 249.75, 250.0, 250.25, 250.5]

*** Read existing plot options from file D:\code\github\ePSproc\epsproc\vol\plotOptions.json OK.
Selected 75 energies, [82.0, 82.25, 82.5, 82.75, 83.0, 83.25, 83.5, 83.75, 84.0, 84.25, 84.5, 84.75, 85.0, 85.25, 85.5, 85.75, 86.0, 86.25, 86.5, 86.75, 87.0, 87.25, 87.5, 87.75, 88.0, 88.25, 88.5, 88.75, 89.0, 89.25, 89.5, 89.75, 90.0, 90.25, 90.5, 90.75, 91.0, 91.25, 91.5, 91.75, 92.0, 92.25, 92.5, 92.75, 93.0, 93.25, 93.5, 93.75, 94.0, 94.25, 94.5, 94.75, 95.0, 95.25, 95.5, 95.75, 96.0, 96.25, 96.5, 96.75, 97.0, 97.25, 97.5, 97.75, 98.0, 98.25, 98.5, 98.75, 99.0, 99.25, 99.5, 99.75, 100.0, 100.25, 100.5]
Selected symmetries, ['SSUCPU']
In [27]:
# Read & animate
wfClass.readOrbFiles()

# Generate animation...

# Currently need to force some options for animation case... UGLY!!!
wfClass.plotOptions['global']['subplot'] = True
wfClass.plotOptions['global']['animate'] = True
wfClass.plotOptions['global']['interactive'] = False
wfClass.plotOptions['global']['isoLevels'] = 6
wfClass.plotOptions['global']['opacity'] = 0.5
# wfClass.plotOptions['global']['isoValsPC'] = [0.25, 0.5]
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.01559873,  0.01559873]  # This is currently what is set by default, bit low in this case
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.1,  0.1]  # OK
# wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1,  0.1, 0.2]  # OK
wfClass.plotOptions['global']['isoValsAbs'] = [-0.2, -0.1, -0.05, 0.05,  0.1, 0.2]  # OK

wfClass.plotWf(pType='Re')
# wfClass.plotWf(pType='Abs')
Read 75 wavefunction data files OK.
*** Grids set OK
*** Data set OK
Frame images output to:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-22-09
GIF animation file:  D:\temp\xef2_wavefn_280421\wfAnimation_xef2_29-04-21_11-22-09\wfAnimation_xef2_29-04-21_11-22-09.gif
Set plotter to Plotter
Animation output complete.
Out[27]:

Versions

In [31]:
import scooby
scooby.Report(additional=['epsproc', 'xarray', 'jupyter'])
Out[31]:
Thu Apr 29 13:53:53 2021 Eastern Daylight Time
OS Windows CPU(s) 32 Machine AMD64
Architecture 64bit RAM 63.9 GB Environment Jupyter
Python 3.7.3 (default, Apr 24 2019, 15:29:51) [MSC v.1915 64 bit (AMD64)]
epsproc 1.3.0-dev xarray 0.15.0 jupyter Version unknown
numpy 1.19.2 scipy 1.3.0 IPython 7.12.0
matplotlib 3.3.1 scooby 0.5.6
Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191125 for Intel(R) 64 architecture applications
In [ ]: